A solid state drive (SSD) is a data storage device that utilizes solid-state memory to retain data in nonvolatile memory chips. NAND-based flash memories are widely used as the solid-state memory storage in SSDs due to their compactness, low power consumption, low cost, high data throughput and reliability. SSDs commonly employ several NAND-based flash memory chips and a flash controller to manage the flash memory and to transfer data between the flash memory and a host computer.
While NAND-based flash memories are reliable, they are not inherently error-free and often rely on error correction coding (ECC) to correct raw bit errors in the stored data. One commonly employed error correction code employed in nonvolatile memory storage modules, such as SSDs, are low-density parity-check (LDPC) codes. An LDPC code is a linear error correcting code having a parity check matrix with a small number of nonzero elements in each row and column.
Various methods for decoding data encoded with LDPC error correction codes are known in the art, including the sum-product algorithm (SPA) and the min-sum algorithm (MSA). While the sum-product algorithm (SPA) is known to achieve the best decoding performance, it is computationally complex. The min-sum algorithm (MSA) was introduced to reduce the computationally complexity inherent in the sum-product algorithm, however an undesirable performance degradation results when using the min-sum algorithm in comparison to the sum-product algorithm (SPA). To compensate for the errors in the estimations resulting from the min-sum algorithm, attenuation factors have been introduced into the min-sum calculations in an effort to bring the result of the min-sum algorithm closer to that of the optimum sum-product algorithm. However, it is difficult to anticipate what attenuation factor will give the desired result and, in the prior art, the attenuation factor is globally applied equally to all the min-sum estimations, which may not deliver an optimum result.
Accordingly, what is needed in the art is a decoding system and method having improved error correction capability over the min-sum algorithm (MSA) which also eliminates the global application of an indefinite attenuation factor in the decoding process of LDPC encoded data.